'''
author:        Wang Chenyang <cy-wang21@mails.tsinghua.edu.cn>
date:          2025-08-20 18:23:02
Copyright © Department of Physics, Tsinghua University. All rights reserved
'''

import numpy as np
import matplotlib.pyplot as plt

# 设置matplotlib支持中文
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

# 时间数组，从0到16 s，足够覆盖两车运动
时间 = np.linspace(0, 16, 1000)

# 计算轿车位置
轿车位置 = np.zeros_like(时间)
for i, t in enumerate(时间):
    if t <= 6:
        # 前6 s 匀速
        轿车位置[i] = 40 * t
    elif t <= 14:
        # 从6 s 开始匀减速
        轿车位置[i] = 40 * 6 + 40 * (t - 6) - 0.5 * 5 * (t - 6)**2
    else:
        # 停止后位置不变
        轿车位置[i] = 40 * 6 + 40 * 8 - 0.5 * 5 * 8**2

# 计算货车位置
货车位置 = np.zeros_like(时间)
for i, t in enumerate(时间):
    if t <= 16:
        # 从开始匀减速
        货车位置[i] = 85 + 40 * t - 0.5 * 2.5 * t**2
    else:
        # 停止后位置不变
        货车位置[i] = 85 + 40 * 16 - 0.5 * 2.5 * 16**2

# 绘制位置-时间图
plt.plot(时间, 轿车位置, label='轿车')
plt.plot(时间, 货车位置, label='货车')
plt.xlabel('时间 (s)')
plt.ylabel('位置 (m)')
plt.yticks(range(-40, 440, 40))
plt.title('两车位置-时间图')
plt.legend()
plt.grid(True)
plt.show()

# 计算轿车速度
轿车速度 = np.zeros_like(时间)
for i, t in enumerate(时间):
    if t <= 6:
        轿车速度[i] = 40
    elif t <= 14:
        轿车速度[i] = 40 - 5 * (t - 6)
    else:
        轿车速度[i] = 0

# 计算货车速度
货车速度 = np.zeros_like(时间)
for i, t in enumerate(时间):
    if t <= 16:
        货车速度[i] = 40 - 2.5 * t
    else:
        货车速度[i] = 0

# 绘制速度-时间图
plt.figure()
plt.plot(时间, 轿车速度, label='轿车')
plt.plot(时间, 货车速度, label='货车')
plt.xlabel('时间 (s)')
plt.ylabel('速度 (m/s)')
plt.title('两车速度-时间图')
plt.legend()
plt.grid(True)
plt.show()
